<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class MY_Form_validation extends CI_Form_validation {

    protected $CI;

    function __construct() {
        parent::__construct();

        $this->CI = & get_instance();
    }
    
    /**
     * Verifica se o segundo é maior que o primeiro
     * Útil para verificar se o total disponível para empréstimo é menor ou igual ao total disponivel em estoque.
     * NUNCA pode ser maior.
     * 
     * @param  int $second
     * @param  int $first
     * @return boll
     */
    public function second_lower_first($second, $first) {
        $this->CI->form_validation->set_message('second_lower_first', 'O valor do campo <span class="bold">%s</span> deve ser menor ou igual ao campo <span class="bold">Total em estoque.</span>');
        return $second > $first ? FALSE : TRUE;
    }
    
    /**
     * Verifica se a data informada é valida, formato padrão dd/mm/yyyy
     * caso precise validar em outros formatos adicione nessa função
     * ex: mm/yyyy, mm/yy, etc
     * 
     * @param     string
     * @return     bool
     */
    function valid_date($date) {
        $this->CI->form_validation->set_message('valid_date', 'O campo <span class="bold">%s</span> não é uma data <span class="bold">(dd/mm/yyyy)</span> válida.');
        $dateArray = explode("/", $date); // slice the date to get the day, month and year separately

        $d = 0;
        $m = 0;
        $y = 0;
        if (sizeof($dateArray) == 3) {
            if (is_numeric($dateArray[0]))
                $d = $dateArray[0];
            if (is_numeric($dateArray[1]))
                $m = $dateArray[1];
            if (is_numeric($dateArray[2]))
                $y = $dateArray[2];
        }

        return checkdate($m, $d, $y);
    }


    /**
     * Verifica se a hora informada é valida, formato padrão HH:ii
     * caso precise validar em outros formatos adicione nessa função
     * 
     * @param     string
     * @return     bool
     */
    function valid_hour($hour) {
        $this->CI->form_validation->set_message('valid_hour', 'O campo <span class="bold">%s</span> não é uma hora (hh/mm) válida.');

        if (preg_match("/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/", $hour)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    
    /**
     * Valida o dropDown, não permitindo que seu valor seja igual a 0
     * 
     * @param  string $value Valor do dropDown
     * @return bool
     */
    function drop_no_zero($value) {
        $this->CI->form_validation->set_message('drop_no_zero', 'Selecione um item do campo <span class="bold">%s</span>.');

        return $value == 0 ? FALSE : TRUE;
    }
//    
//    
//    function file_upload_check($file, $required) {
//        if ($_FILES['userfile']['error'] == 4 && $required == 'FALSE') {
//            return TRUE;
//        }
//
//        //do the file upload
//        if (!$this->CI->catalog_lib->upload_file()) {
//            $this->CI->validation->set_message('file_upload_check', $this->CI->upload->display_errors('', ''));
//            return FALSE;
//        } else {
//            return TRUE;
//        }
//    }
 
}
